﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Biblioteca.classesBasicas.pessoa;
using Biblioteca.fachada;
using Desktop.views.cruds.crudsPessoa.crudsFuncionario;


namespace Desktop.views.cruds.crudsPessoa.crudFuncionario
{
    public partial class AlterarRemoverFuncionario : Form
    {

        private Funcionario funcionario;
        private MenuFuncionario menuFuncionario;
        private Fachada fachada = new Fachada();

        public AlterarRemoverFuncionario(MenuFuncionario menuFuncionario, Funcionario funcionario)
        {
            
            this.funcionario = funcionario;
            this.menuFuncionario = menuFuncionario;
            menuFuncionario.Hide();

            InitializeComponent();

            inicializaTextsBoxs();
        }

        private void buttonAlterar_Click(object sender, EventArgs e)
        {
            try
            {
                this.funcionario = alteraTextsBoxs();

                fachada.alterarFuncionario(this.funcionario);

                menuFuncionario.carregarGridViewFuncionario();
                menuFuncionario.Show();
                this.Dispose();
                MessageBox.Show("Alterado com sucesso");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void buttonRemover_Click(object sender, EventArgs e)
        {
            try{
            fachada.removerFuncionario(this.funcionario);

            menuFuncionario.carregarGridViewFuncionario();
            menuFuncionario.Show();
            this.Dispose();
            MessageBox.Show("Removido com sucesso");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            menuFuncionario.Show();
            this.Dispose();
        }


        private void AlterarRemoverFuncionario_FormClosed(object sender, FormClosedEventArgs e)
        {
            menuFuncionario.Show();
            this.Dispose();
        }

        private void maskedTextBoxRg_MouseClick(object sender, MouseEventArgs e)
        {
            this.maskedTextBoxRg.SelectionStart = 0;
        }

        private void maskedTextBoxCpf_MouseClick(object sender, MouseEventArgs e)
        {
            this.maskedTextBoxCpf.SelectionStart = 0;
        }

        private void inicializaTextsBoxs()
        {
            this.labelIdValor.Text = this.funcionario.Id;
            this.textBoxNome.Text = this.funcionario.Nome;
            this.maskedTextBoxRg.Text = this.funcionario.Rg;
            this.maskedTextBoxCpf.Text = this.funcionario.Cpf;
            this.textBoxSexo.Text = this.funcionario.Sexo;
            this.textBoxIdade.Text = this.funcionario.Idade;
            this.textBoxCargo.Text = this.funcionario.Cargo;
            this.textBoxSalario.Text = this.funcionario.Salario;
        }

        private Funcionario alteraTextsBoxs()
        {
            this.funcionario.Id = this.labelIdValor.Text;
            this.funcionario.Nome = this.textBoxNome.Text;
            this.funcionario.Rg = this.maskedTextBoxRg.Text;
            this.funcionario.Cpf = this.maskedTextBoxCpf.Text;
            this.funcionario.Sexo = this.textBoxSexo.Text;
            this.funcionario.Idade = this.textBoxIdade.Text;
            this.funcionario.Cargo = this.textBoxCargo.Text;
            this.funcionario.Salario = this.textBoxSalario.Text;

            return funcionario;
        }


        //Metódo cor entrada TextBox
        private void CorEntrada(TextBox tb)
        {
            tb.BackColor = Color.LightBlue;
        }
        //Metódo cor saída TextBox
        private void CorSaida(TextBox tb)
        {
            tb.BackColor = Color.White;
        }


        //Metódo cor entrada MaskedTextBox
        private void CorEntrada(MaskedTextBox tb)
        {
            tb.BackColor = Color.LightBlue;
        }
        //Metódo cor saída MaskedTextBox
        private void CorSaida(MaskedTextBox tb)
        {
            tb.BackColor = Color.White;
        }


        //Evento TextBox Enter
        private void textBoxNome_Enter(object sender, EventArgs e)
        {
            CorEntrada((TextBox)sender);
        }
        //Evento TextBox Leave
        private void textBoxNome_Leave(object sender, EventArgs e)
        {
            CorSaida((TextBox)sender);
        }


        //Evento MaskedTextBox Enter
        private void maskedTextBoxRg_Enter(object sender, EventArgs e)
        {
            CorEntrada((MaskedTextBox)sender);
        }
        //Evento MaskedTextBox Leave
        private void maskedTextBoxRg_Leave(object sender, EventArgs e)
        {
            CorSaida((MaskedTextBox)sender);
        }
        
    }
}
